#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <unistd.h>
#include <thread>

int flag = 100;
void hello()
{
    while (true)
    {
        std::cout << "我是新线程..." << ",pid " << getpid() << std::endl;
        sleep(1);
    }
}

int main()
{
    std::thread t(hello);
    while(true)
    {
        std::cout << "我是主线程..." << ",pid: " << getpid() << std::endl;
        sleep(1);
    }
    t.join();
    return 0;
}


// int main()
// {
//     int arr[10] = {0};
//     for(int i = 0; i <= 10; i++)
//     {
//         arr[i] = 1;
//     }
//     return 0;
// }

// void showid(pthread_t &tid)
// {
//     printf("tid: 0x%lx\n", tid);
// }

// std::string FormatId(const pthread_t &tid)
// {
//     char id[64];
//     snprintf(id, sizeof(id), "0x%lx", tid);
//     return id;
// }

// void *routine(void* args)
// {
//     std::string  name = static_cast<const char*>(args);
//     pthread_t tid = pthread_self();
//     int cnt = 5;
//     while(cnt)
//     {
//         std::cout << "我是一个新线程：我的名字是：" << name << "我的id是：" <<
//         FormatId(tid) << std::endl;
//         sleep(1);
//         cnt--;
//         flag++;
//     }
//     return (void*)123;
// }

// int main()
// {
//     pthread_t tid = 0;
//     int n = pthread_create(&tid, nullptr, routine, (void*)"thread-1");
//     if(n != 0)
//     {
//         perror("线程创建失败，程序退出！");
//         exit(EXIT_FAILURE);
//     }
//     showid(tid);

//     int cnt = 5;
//     while(cnt)
//     {
//         std::cout << "我是main线程：我的名字是：main thread" << "我的Id是: "
//         << FormatId(pthread_self()) << ".flag: " << flag << std::endl;
//         sleep(1);
//         cnt--;
//     }
//     void *ret = nullptr;

//     pthread_join(tid, &ret);
//     std::cout << "ret is：" << (long long int)ret << std::endl;
//     return 0;
// }